当前位置: 首页 > news >正文

网站排名下降怎么上去设计一套app页面多少钱

网站排名下降怎么上去,设计一套app页面多少钱,app设计开发哪家好,网站的建设时间cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化#xff0c;具体的可以参考别的博主的介绍#xff0c;都比较详细。还有一些cuda中的专有名词的含义#xff0c;可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus#xf…cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化具体的可以参考别的博主的介绍都比较详细。还有一些cuda中的专有名词的含义可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus可以看这里。 如有问题请指出谢谢 本节内容主要涉及到使用NPP进行一些图像色域变换等类似功能的就不细说仅针对一些常见的。由于Debayer不同yuv之间的转换Color Sampling Format ConversionGamma校正Complement Color Key一直不清楚这个啥以及Color Processing调色相关的接触不对后面就不介绍了按需。 Color Model Conversion 当前模块主要涉及到的RGBBGRYUVYUV420YUV422NV12YCbCrYCbCr422和YCbCr420之间的相互转换以及批处理分为同样ROI和不同ROI两个接口的接口。其他还有一些未接触过的XYZLUVLabYCCCMYK_JPEGHLSHSV等与RGB或者BGR之间的转换。 本文就那比较简单的转换以为RGB和YUV之间的相互转换为例子。 // 此处介绍的RGB和YUV都是三通道的如果是packed的相互转换则后缀是C3R如果都是planar的则后缀是P3R反之则是P3C3R或者C3P3R。 // RGB2YUV原理 // Npp32f nY 0.299F * R 0.587F * G 0.114F * B; // Npp32f nU (0.492F * ((Npp32f)nB - nY)) 128.0F; // Npp32f nV (0.877F * ((Npp32f)nR - nY)) 128.0F; // if (nV 255.0F) // nV 255.0F; NppStatus nppiRGBToYUV_8u_C3R(const Npp8u *pSrc,int nSrcStep,Npp8u *pDst,int nDstStep,NppiSize oSizeROI);// RGB2YUV原理 // Npp32f nY (Npp32f)Y; // Npp32f nU (Npp32f)U - 128.0F; // Npp32f nV (Npp32f)V - 128.0F; // Npp32f nR nY 1.140F * nV; // if (nR 0.0F) nR 0.0F; // if (nR 255.0F) nR 255.0F; // Npp32f nG nY - 0.394F * nU - 0.581F * nV; // if (nG 0.0F) nG 0.0F; // if (nG 255.0F) nG 255.0F; // Npp32f nB nY 2.032F * nU; // if (nB 0.0F) nB 0.0F; // if (nB 255.0F) nB 255.0F; NppStatus nppiYUVToRGB_8u_C3R(const Npp8u *pSrc,int nSrcStep,Npp8u *pDst,int nDstStep,NppiSize oSizeROI); code #include iostream #include cuda_runtime.h #include npp.h #include opencv2/opencv.hpp#define CUDA_FREE(ptr) { if (ptr ! nullptr) { cudaFree(ptr); ptr nullptr; } }int main() {std::string directory ../;// load image cv::Mat image_dog cv::imread(directory dog.png);int image_width image_dog.cols;int image_height image_dog.rows;int image_size image_width * image_height * 3;// device memory uint8_t *in_ptr, *yuv, *out_ptr;cudaMalloc((void**)in_ptr, image_size * sizeof(uint8_t));cudaMalloc((void**)yuv, image_size * sizeof(uint8_t));cudaMalloc((void**)out_ptr, image_size * sizeof(uint8_t));cudaMemcpy(in_ptr, image_dog.data, image_size, cudaMemcpyHostToDevice);NppiSize roi1, roi2;roi1.width image_width;roi1.height image_height;roi2.width image_width / 2;roi2.height image_height / 2;// nppiRGBToYUV_8u_C3R uint8_t *host_yuv (uint8_t *)malloc(image_size);NppStatus status;status nppiRGBToYUV_8u_C3R(in_ptr, image_width * 3, yuv, image_width * 3, roi1);if (status ! NPP_SUCCESS) {std::cout [GPU] ERROR nppiRGBToYUV_8u_C3R failed, status status std::endl;return false;}cudaMemcpy(host_yuv, yuv, image_size, cudaMemcpyDeviceToHost);std::string out_yuv_file directory yuv.bin;FILE *fp fopen(out_yuv_file.c_str(), wb);fwrite(host_yuv, image_size, 1, fp);fclose(fp);// nppiYUVToRGB_8u_C3R cv::Mat out_image cv::Mat::zeros(image_height, image_width, CV_8UC3);status nppiYUVToRGB_8u_C3R(yuv, image_width * 3, out_ptr, image_width * 3, roi2);if (status ! NPP_SUCCESS) {std::cout [GPU] ERROR nppiYUVToRGB_8u_C3R failed, status status std::endl;return false;}cudaMemcpy(out_image.data, out_ptr, image_size, cudaMemcpyDeviceToHost);cv::imwrite(directory out_rgb.jpg, out_image);// freeCUDA_FREE(in_ptr)CUDA_FREE(yuv)CUDA_FREE(out_ptr)if (host_yuv ! nullptr) { free(host_yuv); host_yuv nullptr; } }make cmake_minimum_required(VERSION 3.20) project(test)find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS})find_package(CUDA REQUIRED) include_directories(${CUDA_INCLUDE_DIRS}) file(GLOB CUDA_LIBS /usr/local/cuda/lib64/*.so)add_executable(test test.cpp) target_link_libraries(test${OpenCV_LIBS}${CUDA_LIBS} )result yuv的结果使用7yuv工具查看 使用转换之后的yuv再转回RGB在限定ROI之后的结果: 注意点 可以使用7yuv进行yuv图像的查看7yuv下载对应的版本即可可以体验。还有一个接口是基于JPEG的主要介绍的是JPEG的Color Conversion由于平时接触较少这里暂时不介绍了按需取《JPEG Color Conversion》. ColorToGray Conversion 当前模块也主要分为三个大方向RGBToGrayColorToGray和GradientColorToGray。三个大方向都只选取一个比较常见的进行介绍 // nGray 0.299F * R 0.587F * G 0.114F * B; NppStatus nppiRGBToGray_8u_C3C1R(const Npp8u *pSrc,int nSrcStep,Npp8u *pDst,int nDstStep,NppiSize oSizeROI); // nGray aCoeffs[0] * R aCoeffs[1] * G aCoeffs[2] * B; NppStatus nppiColorToGray_8u_C3C1R(const Npp8u *pSrc,int nSrcStep,Npp8u *pDst,int nDstStep,NppiSize oSizeROI,const Npp32f aCoeffs[3]); // NppiNorm { max(inf) / sum(L1) / square root of sum of squares(L2) } NppStatus nppiGradientColorToGray_8u_C3C1R(const Npp8u *pSrc,int nSrcStep,Npp8u *pDst,int nDstStep,NppiSize oSizeROI,NppiNorm eNorm);code #include iostream #include cuda_runtime.h #include npp.h #include opencv2/opencv.hpp#define CUDA_FREE(ptr) { if (ptr ! nullptr) { cudaFree(ptr); ptr nullptr; } }int main() {std::string directory ../;// load image cv::Mat image_dog cv::imread(directory dog.png);cv::cvtColor(image_dog, image_dog, CV_RGB2BGR);int image_width image_dog.cols;int image_height image_dog.rows;int image_size image_width * image_height;// device memory uint8_t *in_ptr;cudaMalloc((void**)in_ptr, image_size * 3 * sizeof(uint8_t));cudaMemcpy(in_ptr, image_dog.data, image_size * 3 * sizeof(uint8_t), cudaMemcpyHostToDevice);uint8_t *out_ptr1, *out_ptr2, *out_ptr3;cudaMalloc((void**)out_ptr1, image_size * sizeof(uint8_t));cudaMalloc((void**)out_ptr2, image_size * sizeof(uint8_t));cudaMalloc((void**)out_ptr3, image_size * sizeof(uint8_t));NppiSize roi1, roi2;roi1.width image_width;roi1.height image_height;roi2.width image_width / 2;roi2.height image_height / 2;// nppiRGBToGray_8u_C3C1R cv::Mat out_image_gray cv::Mat::zeros(image_height, image_width, CV_8UC1);NppStatus status;status nppiRGBToGray_8u_C3C1R(in_ptr, image_width * 3, out_ptr1, image_width, roi1);if (status ! NPP_SUCCESS) {std::cout [GPU] ERROR nppiRGBToGray_8u_C3C1R failed, status status std::endl;return false;}cudaMemcpy(out_image_gray.data, out_ptr1, image_size, cudaMemcpyDeviceToHost);cv::imwrite(directory rgb2gray.jpg, out_image_gray);// nppiColorToGray_8u_C3C1R float coeffs[3] { 0.1f, 0.8f, 0.1f};status nppiColorToGray_8u_C3C1R(in_ptr, image_width * 3, out_ptr2, image_width, roi1, coeffs);if (status ! NPP_SUCCESS) {std::cout [GPU] ERROR nppiColorToGray_8u_C3C1R failed, status status std::endl;return false;}cudaMemcpy(out_image_gray.data, out_ptr2, image_size, cudaMemcpyDeviceToHost);cv::imwrite(directory color2rgb.jpg, out_image_gray);// nppiGradientColorToGray_8u_C3C1R_Ctx status nppiGradientColorToGray_8u_C3C1R(in_ptr, image_width * 3, out_ptr3, image_width, roi1, nppiNormInf);if (status ! NPP_SUCCESS) {std::cout [GPU] ERROR nppiGradientColorToGray_8u_C3C1R failed, status status std::endl;return false;}cudaMemcpy(out_image_gray.data, out_ptr3, image_size, cudaMemcpyDeviceToHost);cv::imwrite(directory gradient.jpg, out_image_gray);// freeCUDA_FREE(in_ptr)CUDA_FREE(out_ptr1)CUDA_FREE(out_ptr2)CUDA_FREE(out_ptr3) }make cmake_minimum_required(VERSION 3.20) project(test) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) find_package(CUDA REQUIRED) include_directories(${CUDA_INCLUDE_DIRS}) file(GLOB CUDA_LIBS “/usr/local/cuda/lib64/*.so”) add_executable(test test.cpp) target_link_libraries(test ${OpenCV_LIBS} ${CUDA_LIBS} ) result 注意点 Color2Gray的接口与RGB2Gray的区别主要在于三个通道是不是比例关系。由于都是灰度图的ColorGray的变化与直接rgb的转换结果差异性不易从肉眼看出来但是通过不同的比例组合明显看出图像是有区别的。
http://www.w-s-a.com/news/519603/

相关文章:

  • 专门用来查找网址的网站查公司名字是否被注册
  • 自己创建网站教程河南省建设厅官方网站李学军
  • 一个网站需要多少容量怎样免费设计网站建设
  • 建设工程交易中心网站12306的网站是哪个公司做的
  • 建设网站经营范围自己给公司做网站
  • 河北省住房建设厅政务网站网络营销推广的岗位职责有哪些
  • 上海网站建设优化价格孝义做网站的公司
  • 哪个公司网站做的最好义乌 网站 制作
  • 百度站长工具综合查询wordpress 上传pdf
  • 旅游短租公寓网站建设深圳龙岗招聘网
  • 做海淘是在哪个网站网络查控系统设计方案
  • o2o网站建设代理商微信公众号开发文档
  • 网站设计课程总结关于网站备案的公告
  • 网站建设与运营意义到哪查找网站域名
  • 网站及单位网站建设情况眉县住房和城市建设局网站
  • 网站是否能够被恶意镜像wordpress占用
  • 经典设计网站网站等保测评怎么做
  • 重庆做网站公司贴吧廊坊公司快速建站
  • 海外贸易在什么网站做怎么排名到百度第一页
  • 线上注册公司是在哪个网站做高仿网站
  • 网站构架图网上推广平台哪个好
  • 公司网站首页图片素材vi设计的目的和意义
  • 网站的需求分析都有哪些内容济南营销型网站建设团队
  • 怎么选择优秀的网站建设公司生鲜网站开发
  • 如何编写网站建设销售的心得网站的权限管理怎么做
  • 网站业务员好做吗无忧网站优化
  • 网站随机代码网站建设费 账务处理
  • 商洛网站建设哪家好网站建设 织梦者
  • 怎么创建收费网站宁夏住房和城乡建设部网站
  • 怎么确认网站是什么语言做的用php和mysql做网站