深圳做网站de,有自己网站做淘宝客赚钱吗,做注册会计师网站,软件定制 杭州需求背景
开发rk3588 音视频硬件编解码#xff0c;然后看见他的输入文件格式。。 只能是裸的文件。不能是压缩过的。就是不能是jpg/png这种格式#xff0c;只能是以下的图像/视频 的存储格式.那么我没有这个格式的#xff0c;以前hi3559的bgr格式和他要的也不太一致#x…需求背景
开发rk3588 音视频硬件编解码然后看见他的输入文件格式。。 只能是裸的文件。不能是压缩过的。就是不能是jpg/png这种格式只能是以下的图像/视频 的存储格式.那么我没有这个格式的以前hi3559的bgr格式和他要的也不太一致然后去搜了以下发现他要的这个还算是标准格式的
mpi: color: id 0 0x00000 YUV420SP, NV12
mpi: color: id 1 0x00001 YUV420SP-10bit
mpi: color: id 2 0x00002 YUV422SP, NV24
mpi: color: id 3 0x00003 YUV422SP-10bit
mpi: color: id 4 0x00004 YUV420P, I420
mpi: color: id 5 0x00005 YUV420SP, NV21
mpi: color: id 6 0x00006 YUV422P, 422P
mpi: color: id 7 0x00007 YUV422SP, NV42
mpi: color: id 8 0x00008 YUV422-YUYV, YUY2
mpi: color: id 10 0x0000a YUV422-UYVY, UYVY
mpi: color: id 12 0x0000c YUV400-Y8, Y800
mpi: color: id 15 0x0000f YUV444SP
mpi: color: id 16 0x00010 YUV444P
mpi: color: id 65536 0x10000 RGB565
mpi: color: id 65537 0x10001 BGR565
mpi: color: id 65538 0x10002 RGB555
mpi: color: id 65539 0x10003 BGR555
mpi: color: id 65542 0x10006 RGB888
mpi: color: id 65543 0x10007 BGR888
mpi: color: id 65546 0x1000a ARGB8888
mpi: color: id 65547 0x1000b ABGR8888
mpi: color: id 65548 0x1000c BGRA8888
mpi: color: id 65549 0x1000d RGBA8888先贴一段cmake文件
想要蹭个关注 所以水个cmake
cmake_minimum_required(VERSION 2.8)
project( cvtest )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( demo cv2.cpp )
target_link_libraries( demo ${OpenCV_LIBS} )主函数就是cv2.cpp,使用的时候需要把这个存储为CMakeLists.txt,和cv2.cpp放在同一个路径下当然前提是你的系统有装opencv,我的版本是4.5.5
opencv 主函数
如果图像的格式是BGR888表示每个像素由蓝色Blue、绿色Green、红色Red各占8位总共24位。网上看了很多没有说怎么直接存的但是他们说Opencv读取进来就是 bgr888,这样的话想着就直接使用文件读写往里写就可以了。 确实就写进去了。在rk3588的编解码应用中可以正常使用编码。
#include stdio.h
#include opencv2/opencv.hpp
#include opencv2/highgui.hpp
#include opencv2/core.hpp
#include opencv2/imgproc.hpp
#include opencv2/core/types.hpp
#include opencv4/opencv2/imgproc/imgproc_c.h#include opencv2/core/core.hpp
#include opencv2/imgcodecs.hpp
#include opencv2/imgproc.hpp
#include iostream
#include fstream
using namespace cv;
using namespace std;
int main(int argc, char** argv ){cout this test is for bgr picture storeendl;Mat image;image imread( ./my.jpg, 1 );if ( !image.data ){printf(No image data \n);return -1;}printf(opencv version is %s\r\n,CV_VERSION);ofstream outputFile(./sample.bgr, std::ios::out | std::ios::binary);//程序将每个通道的值以二进制形式写入文件并使用std::ios::binary标志打开文件以确保以二进制形式写入数据。if (!outputFile.is_open()) {std::cerr 无法打开文件 std::endl;return 1; // 退出程序并返回错误代码}int rows image.rows;int cols image.cols;coutrows is rows cols is colsendl;// 将Mat数据写入文件for (int i 0; i rows; i) {for (int j 0; j cols; j) {cv::Vec3b pixel image.atcv::Vec3b(i, j);outputFile.write(reinterpret_castchar*(pixel[2]), 1); // 红色outputFile.write(reinterpret_castchar*(pixel[1]), 1); // 绿色outputFile.write(reinterpret_castchar*(pixel[0]), 1); // 蓝色}// outputFile \n; // 每行结束后换行}// 关闭文件outputFile.close();std::cout Mat数据已成功写入文件。 std::endl;// Mat image1;// cvtColor(image1, image, COLOR_BGR2YUV_I420);}cv::Vec3b表示一个包含三个ucharunsigned char元素的向量分别表示蓝色、绿色和红色通道的强度。 如果存储yuv等格式需要使用cvtColor(inputImage, grayImage, COLOR_BGR2YUV);这个函数进行转换然后进行存储存储的地方应该还需要根据对应的格式修改