我正在使用一些基本的计算机图形来接近c ++.
像素数据通常表示为:
unsigned char *pixels
Run Code Online (Sandbox Code Playgroud)
并且unsigned char是好的,因为它是0到255之间的值(256 = 2 ^ 8因为char是2字节而1字节是8位?).这很好,因为RGB颜色用0到255之间的数字表示.
但是...我理解这是一个单色图像,在普通图像中我有RGB,我会有3个未加掩盖的字符阵列,一个用于红色,一个用于绿色,一个用于蓝色.就像是:
unsigned char *pixels[3]
Run Code Online (Sandbox Code Playgroud)
但我从来没有发现类似的RGB像素数据
我正在将 openNI 用于一些带有 kinect 传感器的项目。我想为深度图给出的用户像素着色。现在我有从白色到黑色的像素,但我想要从红色到黑色。我尝试过 alpha 混合,但我的结果只是我有从粉红色到黑色的像素,因为我添加了(使用 addWeight)红色+白色 = 粉红色。
这是我的实际代码:
layers = device.getDepth().clone();
cvtColor(layers, layers, CV_GRAY2BGR);
Mat red = Mat(240,320, CV_8UC3, Scalar(255,0,0));
Mat red_body; // = Mat::zeros(240,320, CV_8UC3);
red.copyTo(red_body, device.getUserMask());
addWeighted(red_body, 0.8, layers, 0.5, 0.0, layers);
Run Code Online (Sandbox Code Playgroud)
其中 device.getDepth() 返回带有深度图的 cv::Mat 并且 device.getUserMask() 返回带有用户像素(仅白色像素)的 cv::Mat
一些忠告?
编辑:还有一件事:多亏了sammy 的回答,我已经做到了。但实际上我没有完全从 0 到 255 的值,而是从(例如)123-220。
我将通过一个简单的 for 循环找到最小值和最大值(有更好的方法吗?),以及如何将我的值从 min-max 映射到 0-255 ?
我对JS世界比较陌生.
我习惯用QT编写UI(构建UI的好工具!).使用QT我正在为每个元素做一个类:如果我有一个带有一些元素的表,我有一个每个元素的类和一个表的类(也许也用于行).每个类都包含数据和操作其"DOM"的方法.
现在在html中我正在使用一些在div上包含空骨架的ejs文件,我正在编写一个类来通过jquery来操作它.
例如:
userslist.ejs:
<script type="text/javascript">
function UsersList(path) {
this.path = path;
$('#userList > tbody').empty();
this.loadAjax();
}
UsersList.prototype.loadAjax = function() {
var that = this;
$.getJSON(this.path, function(users) {
that.fillUsers(users);
});
};
UsersList.prototype.fillUsers = function(users) {
var that = this;
users.forEach(function(user){
var tr = that.buildTr(user);
$('#userList > tbody:last').append(tr);
});
};
UsersList.prototype.buildTr = function(user) {
...
};
</script>
<h1>Users list</h1>
<table id="userList">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Control</th>
</tr>
</thead>
<tbody></tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
使用JavaScript编码的回调方式(以及一般的jquery dom操作)我很容易丢失this关键字来引用类方法和类属性(即使我在嵌套回调中获得了一些控制权).而且我发现自己真的滥用了这个var that = this;东西......我几乎在课堂上的每个方法中都有它.
我怎么能避免这个?我喜欢OOP,但我很想探索这个新的时尚js,具有一些功能特性和asynch无处不在. …
我想用TypeScript 使用express-boom for express.它缺乏打字,所以我想写自己的.只是让它编译是微不足道的.
这个中间件res用一个属性boom(从boom模块派生)装饰对象:
var express = require('express');
var boom = require('express-boom');
var app = express();
app.use(boom());
app.use(function (req, res) {
res.boom.notFound(); // Responsds with a 404 status code
});
Run Code Online (Sandbox Code Playgroud)
但随着打字稿我要投它,因为无论http.ServerResponse与Express.Response拥有繁荣的财产,当然是:
return (<any>res).boom.badRequest('bla bla bla');
Run Code Online (Sandbox Code Playgroud)
这是最干净的方法吗?哪些其他类型的中间件正在做类似的事情?
我知道 stackoverflow 充满了类似的问题,我已经阅读了很多。
从我在throw里面得到的一个承诺应该拒绝它,正如我在文档中所读到的:
如果 executor 抛出异常,它的值将传递给拒绝解析函数。
但是即使在阅读了很多关于 promise 和 throw 的帖子之后,我仍然不明白我粘贴的代码片段以及它为什么会发生。
function foo(a, b, cb) {
setTimeout(() => {
cb('Inner error *!?"$%&#@"');
}, 0);
}
const getThePromise = () => {
return new Promise((resolve, reject) => {
const cb = (err) => {
/* >>> ************ */
throw err; // catch not called
// reject(err); // catch called
/* ************ <<< */
}
foo('foo', 'dudee', cb);
});
}
getThePromise()
.catch((err) => {
console.log('CATCH:', err);
}) …Run Code Online (Sandbox Code Playgroud) 我必须在我的项目中开发一个小工具,比如 Adobe Illustrator 或Kuler 中的“和谐色”调色板——用户可以选择一种或两种颜色,该工具会基于此建议一个 4 或 5 种“和谐”调色板。我在哪里可以找到有关此的一些文件、数学规则或其他背景?
OpenGL:对于简单的过剩立方体没有光
嗨,我正在尝试研究opengl和过剩的灯光,但我很早就遇到了问题.我有这个代码用自定义相机设置在自定义位置制作一个发光的立方体:
void testApp::draw(){
static float amb[] = {0.4, 0.4, 0.4, 0.0};
static float dif[] = {1.0, 1.0, 1.0, 0.0};
float light_diffuse[] = {1.0, 0.0, 1.0, 1.0};
float light_position[] = {-1.0, 1.0, 1.0, 0.0}; // i tried a lot of positions here!
// set camera
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 200, 1200, 0,0,0, 0,1,0);
// set lights
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
glMaterialfv(GL_FRONT, GL_AMBIENT, amb);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);
// draw scene
ofScale(50, 50, 50);
glPushMatrix();
glutSolidCube(2);
// close …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试使用 Mat 类。我想在两个图像之间做一个产品元素明智的,MATLAB immultiply的 c++/opencv 端口。
这是我的代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace cv;
using namespace std;
Mat imgA, imgB;
Mat imgAB;
Mat product;
void printMinMax(Mat m, string s) {
double minVal;
double maxVal;
Point minLoc;
Point maxLoc;
minMaxLoc( m, &minVal, &maxVal, &minLoc, &maxLoc );
cout << "min val in " << s << ": " << minVal << endl;
cout << "max val in " << s << ": " << maxVal << endl; …Run Code Online (Sandbox Code Playgroud) 我有一个混合 C 和 C++ 的简单项目(将 C 库包装到 C++ 类中并使其易于在 C++ 项目中使用)。该项目是使用 VisualStudio 构建的,我在 Linux 或 Mac 下,所以我想将其转换为 CMake 项目。
VS项目内容满满的
<ClInclude Include="a_file.h" />
Run Code Online (Sandbox Code Playgroud)
所以我认为该文件只是包含在内,没有任何复杂的构建系统。这是我的 CMakeLists.txt:
cmake_minimum_required(版本2.8)
# project
set(PROJECTNAME "Test")
project(${PROJECTNAME} C CXX)
set (CMAKE_CXX_FLAG "-Wall")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "./")
include_directories(${CMAKE_CURRENT_BINARY_DIR})
find_package(OpenCV REQUIRED)
file(GLOB_RECURSE ${PROJECTNAME}_HEADERS ${CMAKE_SOURCE_DIR}/*.h)
file(GLOB_RECURSE ${PROJECTNAME}_SOURCES ${CMAKE_SOURCE_DIR}/*.cpp)
file(GLOB_RECURSE ${PROJECTNAME}_SOURCES ${CMAKE_SOURCE_DIR}/*.c)
include_directories (include)
include_directories (src)
SET(${PROJECTNAME}_SOURCES
main.cpp
${${PROJECTNAME}_SOURCES}
)
ADD_EXECUTABLE(${PROJECTNAME}
${${PROJECTNAME}_SOURCES}
${${PROJECTNAME}_HEADERS}
)
Run Code Online (Sandbox Code Playgroud)
我知道这不是一个好遵循的规则,但我只需要一种快速而肮脏的方法来使用此代码。
现在,如果我用这个测试 main.cpp 进行:
#include <iostream>
int main(int argc, char *argv[]) {
std::cout << "main > ." << …Run Code Online (Sandbox Code Playgroud)